AWS Step Functionsステートマシンで指定した時間になるまでループを継続する
こんにちは、CX事業本部 IoT事業部の若槻です。
最近、指定の時間になるまで所要の処理を継続して行うワークフローを作成する機会がありました。
そこで今回は、AWS Step Functionsで指定した時間になるまでループを継続するステートマシンを作ってみました。
作ったもの
次の定義のステートマシンを作成しました。
{ "Comment": "A description of my state machine", "StartAt": "Wait", "States": { "Wait": { "Type": "Wait", "Seconds": 30, "Next": "Choice" }, "Choice": { "Type": "Choice", "Choices": [ { "Variable": "$$.State.EnteredTime", "TimestampGreaterThanPath": "$.timestampToContinue", "Next": "Success" } ], "Default": "Wait" }, "Success": { "Type": "Succeed" } } }
Wait
タスクでは、ループ毎に30秒の待機時間を設けています。Choice
タスクでは、指定時間($.timestampToContinue
)よりステート開始時間($$.State.EnteredTime
)が大きければ次のタスク(Success
)に進み、小さければループを継続するようにしています。
動作確認
現在から約2分後の時間を指定してステートマシンを実行してみます。
{ "timestampToEndExecution": "2022-06-09T14:21:00Z" }
実行が開始されました。
指定時間まではループが行われます。
実行が終了しました。
Event Viewを見ると指定した時間を過ぎたらループが終了していますね!
おわりに
AWS Step Functionsで指定した時間になるまでループを継続するステートマシンを作ってみました。
ステートマシンのChoiceでTimestampGreaterThanPath
なる演算子が使えたため、Lambda関数などに頼らずStep FunctionsのBuilt-inな機能だけでしたいことを実現できました。
参考
以上